#include <iostream>
using namespace std;

int resolve(int* nums, int n) {
  if (n == 1) {
    return 1;
  }
  if (n == 2) {
    return nums[0] < nums[1] ? 2 : 1;
  }
  int max = 0, temp;
  // resolve();
}
int main() {
  int n;
  cin >> n;
  int nums[n];
  for (int i = 0; i < n; i++) {
    cin >> nums[i];
  }
  cout << resolve(nums, n) << endl;
}
// int n;
// int a[1005];
// int max_length = 0;

// // 递归函数寻找最长上升子序列
// // index: 当前考虑的元素索引
// // last_index: 当前子序列最后一个元素的索引 (-1表示还没有元素)
// // current_length: 当前子序列的长度

// void findLIS(int index, int last_index, int current_length) {
//   // 递归终止条件：已经考虑完所有元素
//   if (index >= n) {
//     if (current_length > max_length) {
//       max_length = current_length;
//     }
//     return;
//   }

//   // 剪枝：即使后面所有元素都选上，也不可能超过当前最大值
//   if (current_length + (n - index) <= max_length) {
//     return;
//   }

//   // 选择1：不包含当前元素
//   findLIS(index + 1, last_index, current_length);

//   // 选择2：包含当前元素（如果可以构成上升序列）
//   if (last_index == -1 || a[index] > a[last_index]) {
//     findLIS(index + 1, index, current_length + 1);
//   }
// }

// void solveLIS() {
//   cin >> n;

//   // 输入序列
//   for (int i = 0; i < n; i++) {
//     cin >> a[i];
//   }

//   // 初始化最大长度
//   max_length = 0;

//   // 从第一个元素开始递归查找
//   findLIS(0, -1, 0);

//   cout << max_length << endl;
// }

// int main() {
//   solveLIS();
//   return 0;
// }